home *** CD-ROM | disk | FTP | other *** search
/ Freelog 115 / FreelogNo115-MaiJuin2013.iso / Internet / Filezilla Server / FileZilla_Server-0_9_41.exe / source / conversion.cpp < prev    next >
C/C++ Source or Header  |  2011-11-06  |  2KB  |  90 lines

  1. #include "stdafx.h"
  2. #include "conversion.h"
  3.  
  4. CStdStringW ConvFromNetwork(const char* buffer)
  5. {
  6.     int len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, buffer, -1, 0, 0);
  7.     if (len)
  8.     {
  9.         CStdStringW str;
  10.         wchar_t* out = str.GetBuffer(len + 2);
  11.         len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, buffer, -1, out, len + 1);
  12.         str.ReleaseBuffer();
  13.         if (!len)
  14.             str = L"";
  15.         return str;
  16.     }
  17.     len = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, buffer, -1, 0, 0);
  18.     if (len)
  19.     {
  20.         CStdStringW str;
  21.         wchar_t* out = str.GetBuffer(len + 2);
  22.         len = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, buffer, -1, out, len + 1);
  23.         str.ReleaseBuffer();
  24.         if (!len)
  25.             str = L"";
  26.         return str;
  27.     }
  28.  
  29.     return L"";
  30. }
  31.  
  32. char* ConvToNetworkA(const CStdStringA& str)
  33. {
  34.     return ConvToNetworkW(ConvFromLocal(str));
  35. }
  36.  
  37. char* ConvToNetworkW(const CStdStringW& str)
  38. {
  39.     int len = WideCharToMultiByte(CP_UTF8, 0, str, -1, 0, 0, 0, 0);
  40.     if (!len)
  41.         return 0;
  42.  
  43.     char* output = new char[len + 2];
  44.     if (!WideCharToMultiByte(CP_UTF8, 0, str, -1, output, len + 1, 0, 0))
  45.         return "";
  46.  
  47.     return output;
  48. }
  49.  
  50. CStdStringA ConvToLocal(const CStdStringW& str)
  51. {
  52.     int len = WideCharToMultiByte(CP_ACP, 0, str, -1, 0, 0, 0, 0);
  53.     if (!len)
  54.         return "";
  55.  
  56.     CStdStringA outStr;
  57.     char* output = outStr.GetBuffer(len + 2);
  58.     if (!WideCharToMultiByte(CP_ACP, 0, str, -1, output, len + 1, 0, 0))
  59.     {
  60.         output[0] = 0;
  61.         outStr.ReleaseBuffer();
  62.         return "";
  63.     }
  64.     outStr.ReleaseBuffer();
  65.  
  66.     return outStr;
  67. }
  68.  
  69. CStdStringA ConvToLocal(const CStdStringA& str)
  70. {
  71.     return str;
  72. }
  73.  
  74. CStdStringW ConvFromLocal(const CStdStringA& local)
  75. {
  76.     int len = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, local, -1, 0, 0);
  77.     if (len)
  78.     {
  79.         CStdStringW str;
  80.         wchar_t* out = str.GetBuffer(len + 2);
  81.         len = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, local, -1, out, len + 1);
  82.         str.ReleaseBuffer();
  83.         if (!len)
  84.             str = L"";
  85.         return str;
  86.     }
  87.  
  88.     return L"";
  89. }
  90.